星巡研究院

渗透视角下的C语言

### 7.1.1 干什么 `sys/mman.h` 是 POSIX 标准头文件,glibc 据此声明内存映射系统调用,把一段虚拟地址区间与匿名物理内存或磁盘文件建立关联,并提供页级权限调整、映射伸缩、解除与使用建议。它与 `brk`(堆段线性扩展)分工:小堆块由 glibc 经 `brk` 管理,大块内存与文件访问经本库映射完成。普通文件读写仍由 `read`/`write` 经文件描述符完成,本库不替代它们。 核心概念:VMA(virtual memory area,虚拟内存区域,内核 `mm_struct` 中记录的一段连续虚拟地址区间及其权限)。页对齐(映射长度与起始地址按内存页 4096 字节边界取整)。缺页异常(page fault,访问尚未建立物理映射的地址时陷入内核,由内核补建页表项并分配物理页)。COW(copy-on-write,写时复制,私有映射在首次写入时才复制独占物理页)。 ### 7.1.2 谁在调 * glibc `malloc`:单次申请超过阈值的大块内存时经 `mmap` 匿名映射取得,释放时经 `munmap` 归还,不走 `brk`。
这是进阶内容

升级理论包获取本册全部章节,从机器本质系统入门